package com.xuecheng.content.convert;

import com.xuecheng.api.system.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.content.entity.CourseBase;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * MapStruct 转化器
 * 1.在接口类标明注解 @Mapper
 * 2.在类中使用mapstruct的api构建出接口的实例对象
 * 3.编写转换的方法
 *  传入参数 被转换的类声明
 *  传出参数 目标类
 *4.转换对象属性名不一致使用 mapping(source  target)
 */
@Mapper
public interface CourseBaseConvert {

    CourseBaseConvert INSTANCE =  Mappers.getMapper(CourseBaseConvert.class);

    @Mapping(source = "id",target = "courseBaseId")
    CourseBaseDTO entity2dto(CourseBase courseBase);

    /**
     * 集合依赖单个方法 集合方法使用mapping会失效
     */
    List<CourseBaseDTO> entity2dtos(List<CourseBase> list);


    @Mapping(source = "courseBaseId",target = "id")
    CourseBase dto2entity(CourseBaseDTO dto);


    CourseBaseDTO vo2dto(CourseBaseVO vo);
}
